package jdk8.method.reference.demo02.object.mehod.reference;

/**
 * 通过对象名引用成员方法
 *
 */
public class Demo {
    // 定义方法, 方法的参数参数传递Printable接口
    public static void printString(Printable printable) {
        printable.print("HelloWorld");
    }

    public static void main(String[] args) {
        // 方法的参数Printable使一个函数式接口, 所以可以传递Lambda接口
        printString(str -> {
            // 创建MethodReObject对象
            MethodReObject obj = new MethodReObject();
            // 调用对象的成员方法
            obj.printUpperCaseString(str);
        });

        /**
         * 方法引用优化Lambda
         * 1. 对象存在
         * 2. 对象的成员方法
         * 所以可以优化
         */
        MethodReObject object = new MethodReObject();
        printString(object::printUpperCaseString);
    }
}
